first-child and last-child are the most common usages of the nth-child
machinery, so special-casing them makes sense.
{
int pos, x;
+ /* special-case the common "first-child" and "last-child" */
+ if (a == 0)
+ {
+ while (b > 0 && node != NULL)
+ {
+ b--;
+ node = prev_node_func (node);
+ }
+
+ return b == 0 && node == NULL;
+ }
+
/* count nodes */
for (pos = 0; node != NULL; pos++)
node = prev_node_func (node);
* and return TRUE if X is integer >= 0 */
x = pos - b;
- if (a == 0)
- return x == 0;
-
if (x % a)
return FALSE;